// ===== 注入 env 变量
const dotenv = require("dotenv")
dotenv.config()
// =======
const path = require('path');
const shell = require('shelljs');
const UploadOssPlugin = require('@jd/upload-oss-tools');
const getGitCommit = require("./getGitCommit");

const {
  OSS_ACCESS_KEY,
  OSS_SECERT_KEY,
  OSS_BUCKET,
} = process.env
var { name: npm_package_name } = require('../package.json');
let _GIT_COMMIT_ID = getGitCommit();

// 初始化上传应用
const rootDir =  process.cwd();
let _ploadOssPlugin = new UploadOssPlugin({
  localFullPath: path.resolve(rootDir, "./build/"),// 被上传的本地绝对路径，自行配置
  access: OSS_ACCESS_KEY,
  secret: OSS_SECERT_KEY,
  site: "",// 远程 oss 路径 非必填 默认 storage.jd.local 可选(中国:storage.jd.local 印尼:storage-local.jd.id 泰国:storage.jd.th.local 测试:test.storage.jd.com)
  cover: true,// 是否覆盖远程空间文件 默认true
  printCdnFile: false,// 是否手动刷新cdn文件 默认false
  bucket: OSS_BUCKET,// 空间名字 仅能由小写字母、数字、点号(.)、中划线(-)组成
  folder: `${npm_package_name}/${_GIT_COMMIT_ID}`,// 空间文件夹名称 非必填
  ignoreRegexp: "",// 排除的文件规则 正则字符串，匹配到的文件和文件夹都会忽略
  timeout: '',// 上传请求超时的毫秒数 单位毫秒，默认30秒
  uploadStart: function (files) {
    console.log('files uploadStart======', files);
  },// 文件开始上传回调函数，返回文件列表参数
  uploadProgress: function (progress) { },// 文件上传过程回调函数，返回文件上传进度
  uploadEnd: function (res) {
  },// 文件上传完毕回调函数，返回 {上传文件数组、上传文件的总数，成功数量，失败数量，未上传数量
  // 下载oss空间 options参数，使用下下载功能时必填
  downloadOptions: [
    {
      bucket: "", // 空间名字 仅能由小写字母、数字、点号(.)、中划线(-)组成
      folder: "",// 空间文件夹名称 非必填
      downloadLocalFullPath: "", // 本地存储绝对路径
      remoteFolder: true, //是否映射远程绝对路径,默认 true
      downloadStart: function (files) { },// 文件开始下载回调函数，返回文件列表参数
      downloadProgress: function (progress) { },// 文件下载过程回调函数，返回文件下载进度
      downloadEnd: function (res) { },// 文件下载完毕回调函数，返回 {下载文件数组、下载文件的总数，成功数量，失败数量}
    }
  ]
});
// 执行上传
_ploadOssPlugin.upload();

shell.echo('build after ========');